/*
 * @Author: luohan tangli@guokecs.com
 * @Date: 2024-12-19 10:20:11
 * @LastEditors: luohan tangli@guokecs.com
 * @LastEditTime: 2024-12-19 16:06:05
 * @FilePath: \virtual-tour-web\vite.config.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import path from 'path';
import os from 'os';
import { defineConfig, loadEnv } from 'vite';
import { setupVitePlugins } from './build/plugins/index.js';

// https://vitejs.dev/config/
export default defineConfig((configEnv) => {
  console.log('configEnv.mode', configEnv.mode);
  console.log('process.cwd()', process.cwd());
  console.log('loadEnv(configEnv.mode, process.cwd())', os.EOL, loadEnv(configEnv.mode, process.cwd()));
  const { VITE_APP_SERVE_PORT } = loadEnv(configEnv.mode, process.cwd());
  return {
    base: '/station',
    publicPath: '/station/',
    server: {
      host: true,
      port: VITE_APP_SERVE_PORT,
      proxy: {
        // '/api': {
        //   // target: 'http://10.0.0.60:18080/',
        //   target: 'http://10.0.0.171:30001/',
        //   ws: false,
        //   changeOrigin: true
        // },
        '/api': {
          target: 'http://10.0.0.199:8380/api',
          // target: 'http://192.168.0.158:18080/api',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/api/, '')
        },
        '/video': {
          target: 'http://25.55.58.184:19000',
          // target: 'http://192.168.0.158:18080/api',
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/video/, '')
        },

        '/voiceStreamWs/': {
          target: `ws://10.0.0.199:9080/`,
          changeOrigin: true,
          ws: true
        },
        '/file': {
          target: 'http://10.0.0.199:8380/api',
          // target: 'http://192.168.1.15',
          ws: false,
          changeOrigin: true
        }
      }
    },
    plugins: setupVitePlugins(configEnv),
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src')
      }
    },
    optimizeDeps: {
      // https://github.com/pure-admin/vue-pure-admin/blob/main/build/optimize.ts
      /**
       * 此文件作用于 `vite.config.ts` 的 `optimizeDeps.include` 依赖预构建配置项
       * 依赖预构建，`vite` 启动时会将下面 include 里的模块，编译成 esm 格式并缓存到 node_modules/.vite 文件夹，页面加载到对应模块时如果浏览器有缓存就读取浏览器缓存，如果没有会读取本地缓存并按需加载
       * 尤其当您禁用浏览器缓存时（这种情况只应该发生在调试阶段）必须将对应模块加入到 include里，否则会遇到开发环境切换页面卡顿的问题（vite 会认为它是一个新的依赖包会重新加载并强制刷新页面），因为它既无法使用浏览器缓存，又没有在本地 node_modules/.vite 里缓存
       * 温馨提示：如果您使用的第三方库是全局引入，也就是引入到 src/main.ts 文件里，就不需要再添加到 include 里了，因为 vite 会自动将它们缓存到 node_modules/.vite
       */
      include: ['pinia', 'axios', 'vue-router'],
      /**
       * 在预构建中强制排除的依赖项
       * 温馨提示：所有以 `@iconify-icons/` 开头引入的的本地图标模块，都应该加入到下面的 `exclude` 里，因为平台推荐的使用方式是哪里需要哪里引入而且都是单个的引入，不需要预构建，直接让浏览器加载就好
       */
      exclude: ['@iconify-icons/ep']
    },
    build: {
      target: 'es2015',
      rollupOptions: {
        treeshake: false
      }
    }
  };
});
